As the value and use of information continues to increase, individuals and businesses continually seek additional ways to process and store information. One option available to users of information is an information handling system. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes, thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary with regard to the kind of information that is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use, including such uses as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
One example of an information handling system is a storage system such as a small computer system interface (SCSI) storage system or a serial attached SCSI (SAS) storage system. Generally, a SCSI storage system includes a controller, hard disk drives and a SCSI accessed fault tolerant enclosure (SAF-TE). A SAS storage system may include a controller, hard disk drives and expanders that repeat or regenerate the SCSI signals and may provide electrical isolation. The SAS system typically uses a point-to-point link in lieu of a bus for the SCSI interconnector. The SCSI interconnections generally interact using an expander chip that may be transparent to the software, but not necessarily transparent to the hardware.
The SCSI and SAS storage systems typically follow a standard protocol for electronic interfacing. The protocol allows the storage system to communicate with the peripheral hardware devices such as the hard disks, tape drives, CD-ROM drives and/or DVD drives connected to the system. However, despite adhering to a specification, the connected hardware devices may develop compatibility issues with the system based on the physical configuration of the system. For example, a compatibility issue may arise when a hard disk drive is moved from being attached to an internal backplane of a SCSI server to an attached enclosure. Because the internal backplane and enclosure use the same drive carrier, the hard disk drive is easily relocated between the different locations. However, by moving the hard disk drive between the locations, the physical configuration of the storage system is altered. Based on the new configuration, the hard disk drive may not function properly. For example, based on the new configuration, the hard disk drive may cause data loss that results in customer dissatisfaction. Data loss may occur because the physical interconnect is different between the internal backplane of the SCSI server and the attached external enclosure, for example.
Many information handling systems include one or more devices that process and/or operate on the basis of firmware embedded in or near the device. These devices may include hard disk drives (HDDs), CD-ROM drives, DVD drives, and various other devices and the like that include controllers driven by firmware. Firmware is the program code embedded in a storage device and maintained within or near the device. The firmware for a device most often comprises the operational code for the device. Firmware is often stored in flash memory, which describes a class of memory that is erasable and is able to hold its content without power. From time to time, it may be necessary and/or desirable to update or upgrade the firmware of a device. A firmware upgrade may be necessary to correct errors in, and/or improve the performance of, the device. The process of updating the firmware of a device is sometimes referred to as “flashing” the device, as the firmware update program will replace the software image stored in the flash memory with a second software image.
Examples of information handling systems, such as computers, including servers and workstations, are often grouped in clusters to perform specific tasks. A server cluster is a group of independent servers that is managed as a single system and is characterized by higher availability, manageability, and scalability, as compared with groupings of unmanaged servers. A server cluster typically involves the configuration of a group of independent servers such that the servers appear in the network as a single machine or unit. Server clusters are often managed as a single system, share a common namespace on the network, and are designed specifically to tolerate component failures and to support the addition or subtraction of components in the cluster in a transparent manner. At a minimum, a server cluster includes two or more servers that are connected to one another by a network. The server cluster may include software driven methods by which each client of the server cluster may access the data stored in or controlled by a server of the server cluster. One software application that is used to manage the operation of a server cluster is Microsoft Cluster Service (MSCS), which is produced by the Microsoft Corporation of Redmond, Wash.
In some server cluster configurations, many components of the server cluster are redundant, allowing the component to be replaced or upgraded while the server cluster is online in the network and without affecting the operations and/or services provided by the server cluster to the clients on the network. Server clusters often include a shared storage element in which each drive of shared storage is accessible by each node, or server, of the server cluster. From time to time, the firmware and/or the drivers associated with the storage drives comprising the shared storage must be updated, for example. The process of updating the firmware and/or the drivers of a storage drive may involve taking the storage drive down or offline and updating the firmware and/or the drivers. This step may be followed by a reboot of the storage drive in which the storage drive is placed back in service in the shared storage of the server cluster.
The firmware and/or the driver update process is an important element of the overall system life cycle management of information handling systems generally. The processes invovled in managing the update changes typically consist of the following steps: (1) inventorying the firmware and/or driver version or versions currently installed on the information handling system; (2) comparing the inventory with a defined set of update packages to determine which firmware and/or driver version(s) need to be updated; and (3) deploying changes to the firmware and/or driver version(s) needing to be updated using selected update packages. One important aspect of enabling the comparisons made in step (2) is to figure out programmatically which update packages are applicable to what components of the information handling system as well as the version supercedence of the underlying software components, such as the firmware and/or drivers.
Among the problems encountered conventionally are that there are no industry standards on hardware update applicability. The applicability of the update package varies from component to component and from vendor to vendor. Furthermore, hardware applicability rules are defined and implemented through programming that varies from vendor to vendor and is very difficult to maintain. Moreover, the update applicability rules are handled differently across different layers of the software stack, for example, with respect to application, device driver, and firmware.